package dletc.Collection;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;

import javax.sound.midi.ControllerEventListener;
import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec;

/**
 *
 * Collection 接口中常用的方法：
     1.add(): 增加元素
     2.clear(): 清除集合的方法
     3.remove()： 删除当前集合中的元素			   在底层调用了equals()方面 判断是否存在该元素
     4.contains（）; 判断集合中是否包含某一个元素    在底层调用了equals()方面 判断是否存在该元素
     5.isEmpty():判断集合是不是为空的
     6.size():获取集合中元素的个数，不是获取容量。
     7.toArray():集合转为数组
 	(------------------------以下不常用------------------------)
     8.containsAll(Collection c) 判断当前集合中是否包含另一个集合中的所有的元素。
     9.removeAll(Collection c):  从当前集合中删除自身与另一个集合相同的元素
 	 10.retainAll(Collection c): 从当前集合中删除两个集合中不相同的部分，如果都相同返回false
     
     增：add
     删：remove
     改：set  list接口中的方法 不是Collection接口中方法
     查：get(int index)  list接口中的方法 不是Collection接口中方法
  长度：size
  遍历：A 迭代器  B 增强for循环(缺点：没有索引，下标)  C for遍历
  增强for（foreach）
 	for(元素类型 变量名:数组或集合){
 		sout(变量名);
 	}
 */
public class Demo01 {

	public static void main(String[] args) {
		
		/**
		 * 判断当前集合中是否包含另一个集合中的所有的元素。
		 * boolean containsAll(Collection c):
		 * 
		 * 自定义类一定要重写equals（)方法才能判断对象的内容是否相等
		 */
		
		Collection coll  = new ArrayList();
		
		coll.add(new Student("tom",20));
		coll.add(new Student("david",30));
		coll.add(new Student("gvain",40));
		
		Collection coll2 = new ArrayList();
		coll2.add(new Student("gvain",40));
		coll2.add(new Student("josn",40));
		
		boolean b1 = coll.containsAll(coll2);
        System.out.println(b1);
        
        /**
         * 从当前集合中删除自身与另一个集合相同的元素
         * boolean removeAll(Collection c):
         *  适用于 批量删除部分，要删除过个信息，将要删除的元素放到新集合中，统一删除。
         */
        System.out.println(coll.removeAll(coll2));
        System.out.println(coll);
        System.out.println("-------------------");
        /**
         * 从当前集合中删除两个集合中不相同的部分，如果都相同返回false
         * retainAll(Collection c):
         * 
         * 数组工具类中 数组变集合的方法  static <T> List<T> asList(T... a)   T... a 可变形参
         */
        
        //重新创建一个集合3
        Collection c3 = Arrays.asList(new Student("david",30),new Student("tom",30));   
        boolean b3 = coll.retainAll(c3);
        System.out.println(coll);
        System.out.println("是否有交集:" + b3);
        
        //拓展： 数组---集合
        List<String>  list =  Arrays.asList(new String[]{"AA","BB","CC","DD"});
        System.out.println(list);
        System.out.println(list.size());
        
        
      
	}

}
